package main

import (
	"fmt"
	"sync"
	"time"
)

// 1~120000
// n (n-1)*30000+1
// 1 1~30000
// 2 30001~60000
// 3 60001~90000
// 4 90001~12000
var wg sync.WaitGroup

func GetPrime(n int) {
	for num := (n-1)*30000 + 1; num <= n*30000; num++ {
		flag := true
		for i := 2; i < num; i++ {
			if num%i == 0 {
				flag = false
				break // 如果不是素数，不要再循环后续
			}
		}
		if flag {
			// fmt.Println(num)
		}
	}
	wg.Done()
}

func main() {
	start := time.Now().UnixMicro()
	// 循环4次，每次开启一个协程
	for i := 1; i <= 4; i++ {
		wg.Add(1)
		go GetPrime(i)
	}
	wg.Wait()
	end := time.Now().UnixMicro()
	fmt.Println("程序结束:", end-start)

	/*
		start := time.Now().UnixMicro()
		// 打印出1~100之间所有的素数。
		// 获取所有的整数
		for num := 2; num <= 120000; num++ {
			// 声明变量记录是否为素数
			flag := true
			// 判断每个整数(num)是否为素数
			// 获取1~num-1之间，是否能被num整除
			for i := 2; i < num; i++ {
				if num%i == 0 {
					flag = false // 能被整除说明不是素数
					break
				}
			}
			// 循环结束后，如果flag还是true，说明就是素数
			if flag {
				// fmt.Println(num)
			}
		}
		end := time.Now().UnixMicro()
		fmt.Println("耗时：", end-start)
	*/
}
